{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Image Augementation for 3D images"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Powered by **Analytics Zoo/Spark** for deep learning, running on **Intel** architecture. In this demo, we will show some imaging processing methods on meniscus data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "import os\n",
    "import numpy as np\n",
    "import matplotlib\n",
    "matplotlib.use('Agg')\n",
    "%pylab inline\n",
    "from matplotlib import pyplot as plt\n",
    "import h5py\n",
    "from math import pi\n",
    "\n",
    "from zoo.common.nncontext import *\n",
    "from zoo.feature.common import *\n",
    "from zoo.feature.image3d.transformation import *\n",
    "\n",
    "sc = init_nncontext(\"Image Augmentation 3D Example\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Load sample data using `h5py` library. We expand the dimension to meet the 3D image dimensions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "image = h5py.File(os.getenv(\"ANALYTICS_ZOO_HOME\")+\"/apps/image-augmentation-3d/image/meniscus_full.mat\")['meniscus_im']\n",
    "sample = np.array(image)\n",
    "sample = np.expand_dims(sample,3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Shape of sample."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(20, 256, 256, 1)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## Create LocalImageSet"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "creating: createLocalImageSet\n"
     ]
    }
   ],
   "source": [
    "image_list=[sample]\n",
    "image_set = LocalImageSet(image_list=image_list)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## Create DistributedImageSet"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "creating: createDistributedImageSet\n"
     ]
    }
   ],
   "source": [
    "data_rdd = sc.parallelize([sample])\n",
    "image_set = DistributedImageSet(image_rdd=data_rdd)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## Image Tranformation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Cropping"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "creating: createCrop3D\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(5, 40, 40, 1)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "start_loc = [13,80,125]\n",
    "patch = [5, 40, 40]\n",
    "crop = Crop3D(start=start_loc, patch_size=patch)\n",
    "cropped_imageset = crop(image_set)\n",
    "crop_data = cropped_imageset.get_image(key=\"imageTensor\").first()\n",
    "crop_data.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Rotate 30 degrees"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "creating: createRotate3D\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(5, 40, 40, 1)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "yaw = 0.0\n",
    "pitch = 0.0\n",
    "roll = pi/6\n",
    "\n",
    "rotate_30 = Rotate3D([yaw, pitch, roll])\n",
    "rotate_30_imageset = rotate_30(cropped_imageset)\n",
    "rotate_30_data = rotate_30_imageset.get_image(key=\"imageTensor\").first()\n",
    "rotate_30_data.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Rotate 90 degrees"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "creating: createRotate3D\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(5, 40, 40, 1)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "yaw = 0.0\n",
    "pitch = 0.0\n",
    "roll = pi/2\n",
    "\n",
    "rotate_90 = Rotate3D([yaw, pitch, roll])\n",
    "rotate_90_imageset = rotate_90(rotate_30_imageset)\n",
    "rotate_90_data = rotate_90_imageset.get_image(key=\"imageTensor\").first()\n",
    "rotate_90_data.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Random affine transformation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "creating: createAffineTransform3D\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(5, 40, 40, 1)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "random = np.random.rand(3, 3)\n",
    "affine = AffineTransform3D(random)\n",
    "affine_imageset = affine(rotate_90_imageset)\n",
    "affine_data = affine_imageset.get_image(key=\"imageTensor\").first()\n",
    "affine_data.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Pipeline of 3D transformers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "creating: createDistributedImageSet\n",
      "creating: createCrop3D\n",
      "creating: createRotate3D\n",
      "creating: createRotate3D\n",
      "creating: createAffineTransform3D\n",
      "creating: createChainedPreprocessing\n"
     ]
    }
   ],
   "source": [
    "image_set = DistributedImageSet(image_rdd=data_rdd)\n",
    "start_loc = [13,80,125]\n",
    "patch = [5, 40, 40]\n",
    "yaw = 0.0\n",
    "pitch = 0.0\n",
    "roll_30 = pi / 6\n",
    "roll_90 = pi / 2\n",
    "transformer = ChainedPreprocessing(\n",
    "    [Crop3D(start_loc, patch),\n",
    "    Rotate3D([yaw, pitch, roll_30]),\n",
    "    Rotate3D([yaw, pitch, roll_90]),\n",
    "    AffineTransform3D(random)])\n",
    "transformed = transformer(image_set)\n",
    "pipeline_data = transformed.get_image(key=\"imageTensor\").first()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Show Results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x7f521fcc3850>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\naiTVRDLdNGba5nTSOJuoTKhMzJkyUehAqljz7p2K/fBnABdgVak+N91NoUy0v3ykpRjzI9Zi0wt9\nCOjMsI98fwdzZY7IfO1ronw/XTNVbnL5XbKZTl4bb5tTzT9RI8HnVgMvAl48A2mMbvO0aaZxNlGZ\nUJmYM2Wi0IFUdC6+NaTXBOTL/uBvM/BTrNq4EWv3BZvypinPaci2v0LNT1jo+RHdHI03kZqjsZDf\nwVyaIzJf5SJTvp+ufJSbbL/LZOWS13Ld5mTyTy7agV8DJ81AGqPbPHmG0jgbqEyoTMyZMlHoQOoe\nbP69dVgb5luw+fnyqRqoC57XYHdkPRjsd2OwfCOpjJEv2fZXqPkJCzk/YrY5Ggv1Hcy1OSLzUS6y\n5fvpyke5yfa7TEaueW0625xqOpeQak6oAv4eu3toOmnMts3l3jq5fpezicpEisrE9LZZKmUizRlY\nj/8d2C3n+XYE1ma6Bbtt0+1zEdZWno/hD24B9gEDWDv/OyfY3yew72Mr8A952P95wI3Ybb/3Y5nT\nb3ue6f2/AKti3UL6LaeF+g4y7f8MCvsd5Gqmy0W2fJ+LXPPxVLY5Ud6cyFTy2lS2OVH+Gc+zgfuC\n7T0AfCxYPp00ZtvmdL7L2UZlQmVCZUJERERERERERERERERERERERERERERERERERERERERERERE\nRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE\nRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE\nRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE\nRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE\nRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE\nRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE\nRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE\nRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE\nRERERERERERERERERERERERERERERERERERERERERERERERESsAm4KZiJyLwWaAZ2Be8PhPYDXQA\nxwMPAS8qTtLy7jqgBfhLsROSwQuBrcVORIF1AutmYDvXA5cFz0v5ezwK2IKV1Q8UOS2ZfBv4VLET\nIdntBHqwgncAOynV5/DZl+Swr+tJFcqpWADcADQGj09H3l8H/AHoBh4FXjrOtjYBg1jB6QAeA64E\nlk8jfWJ2MvU8latPU9hA6ghgBPhWZPnh2P+82Fv2OPDqPKfnN9j33AkMAP3e62ga8+WFWMBYWaD9\nTWQEeFqxE1EAO0kvZ9cBNTO8j+uAf53hbfoOJ5VfO7Hfrit43gGcmsd9+64BvlagfU3kXODOYici\nm7JiJ2CWGgVeBdQBxwHPZvKR7ygQy1O6Mvk37GC9FjgFeDuW6ZxbgHuBRcAngR8BS7JsazRYvx5Y\niNUeLA8+r2BqeqaTp2a7d2A1S28BKrzlhwOHggdYuTgceCTP6TkD+57rgO8BX/Jev99bL5HHNKzF\nTup9U/hsvtJVyONSsfjl7ETgZPJTzvL5Xe4ilV/rgmXPCZ7XA3/y1o3nMR1rmXpZzWe6ZI54kvRa\npS8Dv/ZevwZ4GGjFanueGSy/CRgmdUX00WD5fwH7gTbgduBZwfL3kH7F/PNg+Urgx0AT8ARw4Thp\nbcYOFs4lwB3B8/XYgdy/IrsdeG+WbW1ibE1GGVa9+xVv2auCZa1YoX62996JwGbsyumHwA+YXo1b\nqZgoT10M7MC+t4eB13nvnQvchf0GLVieON17/wjsd+0AfovVIvq/Y7b8Cnay/yjwAJYHrwGWYbU6\n7cBtWK1nNrEg3a8HtgFvCJa/DCsHw8F2byb96nq7t3/3vWzC8swNwf/yEHCSt69cyoVzHen5bwQL\nprZjtWMA/46dvNqBe4AXeOtPlKaLgD3Be1uD/+V8oBcYCv5nV0v87mC/h7CyvmKcdG0Itvux4P/d\nh+WJV2Df8yEszzinAH/GfuN9WB4oD967g/RajTcBp2E1Zs7RwB+Dzz9Eeq3h9cA3gV8F/+dfmL21\nW9Fy9hXgF8Fzv1bueuA/sPLSgf3vh3ufeyaW9w9hv+ubvPf8PHUa6d/jTuCfgfux4/33gaT3/njH\nzmz8dJ8bfO5y4CBWM/Y04H+D183Ad4GGSaZpCfa7tgb/6+1Ymf5fLP/2Yt/PM4Jt3ojlx53YhbkL\nKOvoqe8AACAASURBVKPpugz7nr4F/DeW7+7ELsj/Pdjfo1jzvpPtGHg06eWpJVh+Pelle6Ly9V6s\n7LQC30Dy7klSTWCrsZPMpcHr9dgB6aVY1P0x7MdLeJ+NNu2diwUz5VgN0mbvvWg1cRlWA/SpYJtH\nYAfWl2dJazPwXO/1J0lltDMZe0Xx9eCRySYyNwl9hlQ/jxOwJsTnYoXoHdj/XI7VRjyFneDiwf77\nyW81+FwxXp4CeCOpWr83Y3lsWfD6XCzgPh/7zt8H7PU++2fgq9hv8ELsQHRj8N5k8uv/AYdhgUoj\ncB9Wa5YEfh9JZ9QLsYNbJfA5UictsGBgd2T9aBOTX142YQfM04P/8/PB/wa5lwsnUyD1P1hw6E4m\nb8VqYMuAj2AXPa5mbbw0HYUFYO53O9z73zaS3hTxEqysHh9s++vYSStbuk7Dmtk/hf1u78JOUN/D\njiXPwgLVtcHnT8SCqTJSNQkfimzf/95PI/XblGMnsIux7/bFWB5aH7x/fbDvk4O0fBeruZ6N/HK2\nBgsKPxO8jgZSHVjQXAFcQer3qsG+m43Y93k89tsdHbw/XiD1JHasXI7lqUdIXbhmO3b6tbiZRAOp\nQeCCIG2VwNOD/7kcC4xux84zk0nTF7C+RvHg4Tcb/gE4z3t9I/BT7PtZi3X9cO9nStf12Pd2Aqlj\nyU7gbcH/fxkWsDnjHQOj5QnSz52TKV+/wGr01mDB4D8gebWTVHv0CJZ5XDPov2ARvRPDrhxdh9lM\ngZRvQbBNV2UbPdA/DwtGfJcA12bZ3k1Yc10tdtXwOHbgB2vm+3Nk/c8G+8xkE5kDqfdhkTxYoYsG\nRlux//9F2HfhuzPD+vPRTrLnqUw2YzVJYAep7d571cE2lmIn70Ggynv/e6QCqcnk17O993+E1T44\nHwjSms3VWG0T2EFsgFTT8WnkHkj91nvPBQuQe7lwMgVSp03wmRZSNQXjpekZ2InRncR855J+4L8G\n+KL3ugb7rlwtSDRdpwX7cVf8dcE6/kXTPcBrs/wP/wT8xHs9XiD1Qix49N1MqibteuA73ntnYLUJ\ns9FOrJy1Bs+/QSpgjgZSN3ufq8FqPFZjTdR3kO4/SV1QTBRIneO9/hJ2zITxj53jiQZS0XIQ9Trs\nYmgyafoM8DMsGIv6A3bxBhZk9ZNem/2eYJ1s6boO+96cD2A1Tc6zsd8pm+gxcLxAajLl6/ne+z/A\napNnhPpIZTaKHaDqsYLyElLNZyuwq1B/3d3AqizbKsN+4B1Y08GTwfJs/ZTWYjUDrd7jEuykmckH\nsea77dgJ72ZStRVdjO3QvAA7mediFal+LmuxamI/faux72Ul6TUlYN/NfOibMZHx8hTY1elmUt/p\nsaR30j7gPXcn8lpSeaXXe98/oK1k4vza6D3vjbzuC/aTSRV2Fflfwest2MnrrVnWnwx/3z3Yla2r\nZcmlXIwnGtx9FLtKbwu220B6+cyWph1YwLIpWOcW0psTfCtI/126sTLl/w7RdB3Cfi9I/b7R38o1\n26/Hmmj2Y8eZz5Gef8azMsO+nwqWE6Qhut9seaLYXDlbiN1o8wEsAMi0nn/R140F0CuxvPY80vPa\nOaRqRybil1X/uxrv2JmL6G+1DLtY2oP99jcx9rfPlqavYPn4t9hFeDS4cPlvCXax4OfhXYyff8Fq\nfpy+yOtoPproGDieyZSv6DF0xvKwAqmJ3YH1N/hS8Hofqep0sCBhDakAYpR0b8Wi6pdiB+gjvM9l\nWn8XFmwt9B71WNt6Jq1YVekKLMKPA38N3nsYu5LxM8xxpF8V+KJpAcsjryZ1NbALO0j76avFIvz9\njA0oD8+y3fksmqfWYlf8F2A3BSzEmiQmE4DuD9av9pb5+XMv4+fXTCYb+J6J5c3/DNKxP9j2xkl+\nPhe7ya1cjMfPjy/EmjvfhF1kLMRORpP9Dm4JtrE22O6Xsqy3j/Rb72uwk4T/O0ynnHwbCwZdX5ZP\nMvnj+z7sd/P/57WMn0fmOlcOnFqs7O3FjnG3k57X6rDy6eTyW7l1xzt25iK6789jfRGPxX77tzP+\nb+9/vgu7kHg6dp76CNa0G3UQq/le5y07nPRgdDr5d6Jj4ETbnkz5yhsFUpNzBdb/4HlYx9NXYjUK\n5dgVRh/WzwTsys2vJq3FrohasB/385FtN5Je5X43VjX9ceyKP44VkJPJ7GlYholjVe7vxprvwJrj\ntmBV9JVYh+BjsQ67mfgH0gTWJ+AW7Kr/8mD5VVhT3ynB+jXY91GLfQfD2FVgArsy9JsiJMXPUzXY\ngeIgVibfif1Ok/EU1sTzGSw/voD04OK/GD+/TsdGrEr9WCxAPw7rY3Eck0//ZOVaLpyJAqI6rEnn\nINa34lImPyzFeux7TWJlvA/L/5ncgv2uru/Z57F+K7uyrJ+rWuz76cGaX/4x8n70uOT7a/C5j2N5\n5DQsD7km4VKtUX4Fll8rsKa6P2Mn3l9jv+3bsO+jHDuOuWatGLl9J27d8Y6d01GL1cB0YBeyH5tk\nesB+52cEyzqw/DuSYd1h7Nz3uWB/a4EPY/3lJrOfiUx0DGzEau/8JnT/d8i1fM1onlYgNTkHsbt2\nLsKCk7dhNQrNWEF4NXYwBuu89ymspugjWF+Vp7AC+hBWWP3o+hqs30Ur1qdhBMvcx2N3JjVjkXq2\ng/tJWMflDiyTn0N6/4WzsJNNS/D+G0g100WNYv0DOrFmjp8H+z+JVLXovViw9o1gm9uxKlmwK5bX\nY+3qrVht3K+wtmpJ5+epR7DxWv6Mfc/HYnfpOaOMvSLzX5+DBWQtWCBwg/feY4yfXzMZjTzPdDW4\nCgsirsCq693jPuBWLE9MlO5M+822/jC5lYts24xu/9bgsQ1rluxlbFNotjQlsfLejNXGLcGaGzN9\n7vdYf7UfY1fPR2BlM1u6Mi0b77v7KJYPOrDv5fuR9Tdh+aIVa4710zeA5Ykzgv/lG1ithusXmevv\nOFtF84HrB3YI6xD9tuC9TuwmhrOw4/Z+7Heu8D47Xp6K7tO9P96xM5d0R/f3Gexmg3bgl1gem2ya\nnoHdndiJXVx9k/RO2v52LsQCtiewForvkepvmy2PTJR293qiY+DvsZaUA6SaB/3t5Vq+sh3XRGal\nv5Kfph4RkamK3oQgMmWqkZKZ9iLsFtYEFkAdi13xi4jMFqXaXClFkK9A6nTsts7tzOAthjInuPmZ\nWrE29DeSfsfPfKUyIZKumGVCTTsyq8Wx2ynXYR3DtpAayExkPlKZEEmnMiElIx9zOp2CFZCdwevv\nY3dv+R2gdSUgs00+q/pVJmQuUpkQSZexTOSjaW8V6QNz7SH7YJUi84HKhEg6lQkpGfkIpHQVIZJO\nZUIkncqElIx8BFJ7SR8xdg1j518TmU9UJkTSqUxIychHIHUPcCTWibACG+DxF+N9QKTEqUyIpFOZ\nkJKRj87mQ9gUIf+D3ZlxDbN3pnCRQlCZEEmnMiElo1iDkql9XGabYg/QpzIhs43KhEi6gt21JyIi\nIjIvKJASERERmSIFUiIiIiJTlI/O5iIiMgfEYrGMz0dGRoqRHJGim0qZUI2UiMg8FD1huEdZmU4L\nMj9NtUyoRkpEZJ7JdsLwl4vMJ9MpEwqkRETmEXdi8P+qNkrms+mWCQVSIiIlLHpy8J9nWiZS6ma6\nTCiQEhEpcWVlZWNOFG4ZoABK5p2ZLBMKpETk/7d3rqHOpdd9/x/p6H6u77wznotnMkNpoR8CzoVA\nsIMdqENCwK1pSCmEmNQp+eSGNLS2+6FxmkIu0BDSD6GJnWI7JU1oiOsQmsQJcbAD4+K7Gzt1Ax6w\nPeN3Lu/lXHR0jnSkfpD++1176Xm2tq5HW/r/YLN1tqStLZ29nv+znrXW84gNxooEhcKLiBDbxKJt\nQh0pIYTYcKxo2M0KxmCgFVnE9rBIm1hWR+oFACcArgF0AXzPkj5HiKLwAmQTYglMyvcolUool8vJ\n3nrfpVIpEYvBYLDqztQLkE2IJbBqm1hWR2oA4C0A7i7p/EIUDdmEWBo2LOHDFSHR8CGMfr9/Ex0p\n2YRYGqu0iWWG9hR4FyKNbEIsHC8WViDs3oqGfd9gMEhEg/tVXv4qP0xsB6u2iWWOSP05hkO2/wXA\nby3pc4QoCrIJsRS8YJTLZezu7ib7WA4I9xSLfr+fiMiKkE2IpbBqm1hWR+qNAF4C8CiAjwH4WwCf\nWNJnCVEEZBNiZrKWrqBQ2G13dzcRDi8ansFggLOzM7Tb7VWPRskmxMysk00sqyP10mj/CoA/xDCJ\nUAYithnZhJgJH3bwoQmKg/e6rWj4OXIApBJqDw8PcXBwkIQx7t+/v4qvJpsQM7FuNrGMjlQTQBnA\nKYAWgB8A8PNL+BwhioJsQsyFF4yQOMQeh+bHYRItN5tYu6JRKdmEmIt1solldKReh6F3wfP/NwB/\ntoTPEaIoyCbETPhqop2dnUQUKpUKKpVKIhAx0fDvD4mE31aAbELMxDraxDI6Ul8D8IYlnFeIoiKb\nELkIiYTN5SiXy4lYVCoVVKvVqGgwtOFnaQ5VJN1AR0o2IXJRBJvQzOZCCLFG+GojX3mUJRgh0QiJ\nwhp0pITIzbrbhDpSQgixJtDbDomBFYxYCMOKBcWGZdzcskSj3+/f9E8gRIoi2IQ6UkIIsSZY0aCH\n7YVikmj4SQivr6/R7/dxfX2dPLZiYQXELo8hxDpQBJtQR0oIIVZIaO0vbru7u6hWq6nNigf3FBXv\ncdsScJtLcn19nXxGyAOn160RKXETFN0m1JESQogVYZNlWW1kQw4Uhmq1ilqtFhQMLxqhyQV9RZL9\nfC8WfI0tAxdiVWyCTagjJYQQK8IvXeHzPLznHRIMKxq+lNszGAxSr/E5IQxv+NCGEKtiE2xCHSkh\nhFgRfgkLCkKtVgvurVjYEIbd7GzM3IcmE+Rnh8IX19fXyXvVkRKrZBNsQh0pIYRYErGJA7nVajXU\n6/XU3otGaKJBu/hqqIzbisNgMEi9jt62xb6XAiLEMthEm1BHSgghFogNJ4TyPexGseBmc0Gst23n\nwfGr1nvR4DHmhmTNj8OqpV6vh263i263i16vd1M/ndhQNt0m1JESQogFYauPAKQmDGT1kfWsredt\nvW/reVvRsXkfsTXCCB/7sAU9bB7r9XrJpo6UWDTbYBPqSAkhxAKxjXqpVErlfHALiUVINEILrIZm\nXfbet70WigTfz8fW+76+vtaIlFgam24T6kgJIcSM+AbalnGXSqVELGyoIrTxNb4iqVwupz7He9G2\nVDvruohPvvUhjKurK+VIibnYRpuYpyP12wB+GMDLAL59dOwWgN8D8G0AXgDwowDuz/EZQhQJ2cSW\nEVpA1U4G6IWh0WiMHbMbhYLnCTX4XpzstdjXhcIYXiTsZsMZC0Q2sWVso02U5vi9/iuAH3TH3gPg\nYwD+AYC/GP0txLYgm9gi/NIVFIVms4m9vT3s7++ntoODg+C2v7+Pvb09tFqtRFQYwgiFMewWm3vH\nr3LPkIXP/bDb1dVV8niByCa2iG21iXlGpD4B4Fl37G0A3jx6/EEAH4eMRGwPsoktw1ce0YueJnxh\n58Sx63rZ8mv+bT+Xf/uKJZs8S3wSLb1t730vIUdKNrFlbKNNLDpH6nUA7owe3xn9LcQ2I5vYAPwM\nyfR+7UKqMZEIhS742M/KzMRXm+8BILhsha2CsguystG3FUt2gdaQ923/XkGOlGxiA5BNPGSZyeaD\n0SaEGCKbKBg+hGAbZ1u6bSuPskQjtNCqzevwnrf1uPn5lljlks39iIUu7PGTkxOcnp6i1+uteuFi\n2UTBkE2Ms+iO1B0AjwP4FoAnMEwwFGKbkU0UFCsU3KynbMMWWSELKxp+ZXp7bp8Q66/FP7b7UAWT\nLePOCllcX1+jVqthMBig0+ng+voanU5nmT+tbKKgyCbCLLoj9VEA7wDwy6P9RxZ8fiGKhmyiwPjk\nVb/2l5/vxocsvGjEFlSNTSTovW+/WWKzM4cmF/R7iseKloiRTRQY2cQ483SkfhfDhMHbAL4O4N8D\n+CUAvw/gnXhY1irEtiCb2CCsYFA0KBAhcYjlf9jjQFgYYstV2GshPrTC9wEYm08nVpUUEgxuCw7t\nySY2CNlE5HdZwm+dB8XExbpxU7ZAZBM3jJ33JrQOGJevoCiExMF65n61+mq1CiAsGlYw/DpgQHYY\nw09IeHV1ldouLi7QbreTrdPppDb/ehPGkE1sObKJfDahmc2FEFsNG187/w1DFn7LEoxY4ixFKJQ0\nGxOMkFj4v73HbcMQ3uOmIFxeXuLy8jIlEtYjX8KIlCggsonpbEIdKSHE1uK92lDVkU+czcr5YOIs\nN5+7MY1gxK6T5+E+JBihZForFBQOHreCoY7UdiObmN4m1JESQmw9dkbmrHCFFwz/t608KpfLwbBE\nHsEI5YLEysFjFUncvOcd8r5tLog6UgKQTUxjE+pICSG2ArsWl18LjIupcjmLRqMxMe+DYQtu3tsO\nCURMKGKCYbFhC3sOmxzb7XbH8j3a7TYuLi7G8j8YurC5JLHPFpuJbGIxNqGOlBBiK7DVRqw4Ys4G\nq4+sYISEw4Y1KBR2UVYAiWAAGGuQQ6IBpGdc9vjjIa/bhiw6nQ4uLi6ShFruO51OKnxhK5O8gInt\nQDaxGJtQR0oIsRXs7OwkVUex+W8oFM1mMxjKoKfN9cCsR+/DDCHBCIlH1vXa8/kcEL/ERbfbTcIU\nFxcXOD8/T3neFxcXuLy8DM6Tk+d6xOYhm1iMTagjJYTYCiga9LQ5WaAVhklhDFYf0fP2YQjboHtP\nOyQasev0hASDm69CokC0222cnZ3h8vIy8bwvLy+Dc+RoNGo7kU0sxibUkRJCbAR+eQi7+nupVIpW\nG8U2H7awi6kyhySULBvapvW4Q/AcfpFV5nlQHM7Pz1Oety/p9gvAqgO1ucgmVmMT6kgJITYCKxY7\nOzupXA+uARYq0Y5tFAq+31YfAeMzJk8jGL6RDk0uyNd5Uer1ekleB4XChipsHojN/7CVSHlFTBQb\n2cRqbEIdKSHERuBXore5G34Zi1D4wm/VajV1Pr+WlxcH79Xm8bpjYuGxosGQBQXCbqFZmv2q9rFr\nUodq85BNrMYm1JESQmwENnTBxNmQGPgqpJhwVCqV1Pl9qMInuIYee++Z12kFKDYnjv9c7337ZS64\n2XlxLi8vU7kf9LxjowBis5BNrMYm5ulI/TaAHwbwMoBvHx17H4CfBPDK6O/3AviTOT5DiCIhm1gh\ndt6bUqmUyteoVCqJODSbzWQLhSr8PDi2jDuU6+HzPvzEfTGxAMZXq+cx7vla+zk2Efbq6grtdjvJ\n+Tg/Px8r6aZ3ztCFFzNgpR0o2cQKkU3cjE3Msyjl9wE4A/AhPDSQnwNwCuBXJ7xXbpBYNxaxQKts\nYkXYfA/u7YKorD6aJBj2PXYtsEqlkkqc9QJhl5/wlT6xsMVgMJgoGv6cnIWZAnB5eZkkzYZKuX3Y\notvtjgneFIIhmygQsombs4l5RqQ+AeDZvB8kxBYgm1gh5XI5WboiljRrRcPngdiqIybOWm+exKqP\nfHiAjTLfYwkJRZYHzhmZbfIs96Gwha1SioUtbiiMJ5tYIbKJm7GJZeRIvQvAjwP4NICfBXB/CZ8h\nRJGQTSwYzn9D0Qh52aFjNrnWVjDlXY0+JhjcfHLsJKHwogEgOT+9bR+m8Mm0Nvfj8vJyTNzImuVD\nySYWjGzi5mxiXq/gWQB/hIdDto/hYdz7FwA8AeCdgfetlUULgcV5yM9CNrEQ/AzJ9u/d3V20Wi3s\n7e2h1Wqh1WolAsHHPpk2tpQFq5CAcNWR3+xK8j6RltfNfZ78D+sZcw4cW8LtvW0bsuA6YTYHxAvd\nPP+Ced5seBayiYUgm1hPm1j0iNTL5vH7MTQeIbYZ2cQM0Lu2m83VqFariVh40bAed8zbpmDYxjzk\ncWcl0MaSZu3jkGjYz+J5KUSchdnOf+O9bhuy4KzMFLAbDuPlRTYxA7KJ9bWJRXekngDw0ujx2wF8\nacHnF6JoyCZmgKJh8zVsBVG9Xs8UDbuEBTc/q7P9LGBy3oc/br3bSWLBzZdZ27wPOyOz9bKtaNhF\nVrm3Sb43UJU3C7KJGZBNrK9NzNOR+l0AbwZwG8DXMazEeAuAN2A4JPs1AD815/UJUSRkEwuCosG5\nb3zOhxeMVquVmg/Hhy1qtRqAcQ/be6t5k2htA22vORR68aJhxabf7yd5H1YwfN6Hr0CyS1yEqqLW\nqCMlm1gQson1tYmbqpxYGyvPg4/j+l68T7qz/7BQ7zy0Dw0/3kRj6BMD16hBXjY3XUW0NT80sfda\nKN/DetCNRgN7e3upzYpHKGxhy7er1Wri7Vpv1QtELO/DzlsTSlq19hya8ZmPvTd/eXmZEggrGN7j\n5p6l3NwvUShkEytGNlFMm9DM5jmwN4KdZp8be8IcWgzFin3ni3tWRfgEvcFgMDbsuYjvwX2ss+fj\n44u+BiGA8eF+etp2/htfaUSxYEKtTaJtNptjdmkTZwEEvdMsL9uHK0J2Mil84UXJLktBrztUfWQF\nw4Ys7NpgC0icFWuEbKK4NqGO1ASsV8AEv0ajkbpZ7ayqvDF8h8i+3z8GkLqZ2KNeRgcmFpu2x72R\nqbEWy8A6E5VKJbWyPMXChyqscPhEWgoP9/5+JqEQRijXI5ZAa6+dj2MbPXx68TYEwSTaUNjClnFz\n4kE7KzPPa7+TKD6yiWLahDpSOWDHh5UNzWYT+/v7ODg4wOHhIU5OTlAul9Hv93F1dZXq4fuOmK+Q\n2N0d/guurq5SnRvesH70aFZCHkPoNXbkbNHXIASxNmFFw+Z7eG/bPg4l0oY83zybD83HRMOH6fk4\na+P7KRqsKmJIwpdy+9yPq6urlINlJxPUiNRmIZsork2oI+WwHR/e1D5B7+joKNkODw+TIdTd3V2U\nSqXUP/r6+joJB9pqC9uhGgwGqR65j/eGptoPjSBN+l52lloAY5Om2WFkfg9uS447iw3HD/d7p4Kj\nvPv7+9jb20vt+dh74jb3o16vjyXH+sod3/jn8b69500xiomE/a4AkhFqhiwoFL6M286HY/M/fNjC\nCoXssNjIJjbHJtSRcpRKpdTN2Gg0cHBwgIODg2QUypeXnp2d4eTkJNk49MhO0e7ubqrklGsWceQH\nSCfcdbvd5CbiAoy84RgX9kmDQPZNxEoPTrzW7/eTG7TT6WBnZyfl3ZRKJdy7dy/ZHjx4MGZcQuTF\nj8jyvuX9yHwPKxLcc/Or1PMcfg0wILsSaRpPG8CYwxKys9jn+BmWQ/Pg2D1fT+fFC57YHGQTm2MT\n6kg5SqUSGo0GDg8PcXh4iKOjIzz66KO4fft2srcdmGq1mur0sAdtbxROlMbhWYbzLLbn3uv1cO/e\nPdy/fz/Zn52dJdv5+flYLJzEbqxarZYaIr6+vsbJyQlOT09xenqKnZ0d3Lp1C4888ggeeeQRlMtl\nfP3rX8c3vvEN9Pt9XFxcpNYpEmIafJGGX+OLnndIMPb399FqtVJrh1Wr1VS+YSh0AUwnHjHBoLdt\nj9lwt32fr4CyDpCfAyeUUGsnE/S5luskHGJ+ZBObYxPqSDk4InV4eIjHHnsMjz32GF7/+tfjqaee\nwutf/3o8+eSTY0OyTJCzN4fdarVaYhAHBwfY3d1NDa8yrMat1+vhzp07ePnll3Hnzh288soruHv3\nLu7du5d4GszP4mgZid1YzWYzee3BwQF6vR7u3r2L1157Da+99hpKpRKefPJJPPHEE3jyySeToeV+\nv4+TkxPcvXs3mZ+jVCrh+vp6Zf8TUXxszkcoaTbL897f3x+rQKpUKmPD+b5xn1YoYiGCUHjCjiTb\n99gE2l6vN9Yu+KUtvDfOxNlJib2i+MgmNscm1JFysCO1v7+PW7du4fHHH8fTTz+N5557Ds899xye\neeaZsXJQe5PwRrE97VqtloxwHR4eJp0lbjs7O8mQbq1WQ6/Xw4svvohvfvObiefB+DeT1G/duoXj\n42McHx/j1q1bY4bhabVaODo6wvHxMY6OjtDtdvHyyy+j0WigWq2iVCrh6aefxjPPPINnnnkGlUoF\nFxcXuHv3Ll588cXU5G3qRIkQoUaVe97fFAsvEHazHjfDzQxb2EIN7+nmEYxpvW9+h5AXbuE57KzM\n1sHybUJsgsFut5u6fvt9LOskIiKObGI7bEIdqQA+4Zw3DHvW/IfaKgsmC1YqlWTP4dpKpYJWq4Vq\ntZoyJvtexpp587Lz1ev1UC6Xsbe3h6OjI9y+fRsnJyfJ6BZzt7wH4TcabKPRSCoMOVLW7Xaxs7OD\nWq2GwWCQmvAMQBKa5JxXvV7vxv43Yj3xc6P5ylRfZRQSCut1N5vNsTXBGLaw4QpgNoGY5Nl6caC9\n+3P6mZ1tgYadW86vBeYLS2ze4SSBUCeqGMgmtscm1JEK4Kv2fEeKr/FlpRxatWsgsSPEjpWdZ8Mm\nm9thUWDYeTk4OECpVEKz2cTx8TFu374dzZHKMop+v58MI9OQ+/0+6vU69vb2EgNglUe73Ua/P5zK\nARjmV7VaraQTxQ6WEISOBEXCV7raBNmQ122ft9629bhDya0xgbDPeVvwDod9Lb9LCPtaWxxiZ3qO\nCUZMOGwFkr8eu/fXINYf2cT22IQ6UgHsaFG5XAbw8Ebp9XpJJ8tOJWBLPe1NxRwoX+VgvQj+zfdy\nBKlcLqPZbCYLN9ob0MbGa7Va6vP8Prax48ScLXYELy4ukhseeDgixU4UfxMhCO2FjbzN+eC8a6GQ\nRayUm06HdzhiYuGZ5HmHRm8tecIVVizszMxWMEJ5kzHv21/HOgqGyI9sYntsQh0pR6gSAXg4PQFH\nmOxIkp2fyd7gxPfUOerk59ngqBdzphiGK5VKY2sb2YnbQrFxuy4Sh1dtz//6+joxzFqtlro+xqov\nLy+TEbZms4lOp5MkuwtB2LDbEu5GozEWfs7abFVrs9lEpVJJNe6hx9OELrznPUkwGLbwWCfJOrzA\n8wAAIABJREFUCkVohuaQeGSFMYogGCIfsontsol5OlJPA/gQgMcwXFzyNwH8OoBbAH4PwLcBeAHA\njwK4P9dVrpDr62tcXFzg/v37qNVqiUHYeT1oHNxCI1QkNOTpb2KP7Zxx70eavGfiF5T0e06l7yf+\nDO2vrq7Qbrfx6quv4rXXXsOrr76Ke/fu4ezsDJ1ORzlScTbSJkgov89OWmvnSmNVqa0s9SJh1wyr\n1WrJtCAsZvDD+lkNax5POyY4Hh4LVTD5zTsv3s7tqHBsrbK811NANtoeANmEbGLIPB2pLoCfAfB5\nAHsAPgPgYwB+YrT/FQDvBvCe0VYI+v0+2u027t+/j8FgmBNkvYmjo6OxkJpfkBhID7dOuqHsa4F0\nbN3maHnDsd6BH061I1h+mJVxa+sJ2AqKTqeD8/Pz1FxWDx48SCop1JGKspE2AYzPwmxnweeIpV2a\ngrP+c+9Fg9WitCPm7gEYy40gocY15G3HGvisBjorTOJFwjf+IfsOjRDHQuxFEowp2Vh7AGQTsomH\nzNOR+tZoA4AzAF8B8BSAtwF48+j4BwF8HAUykn5/OPkkgKRjwU7UrVu3cHp6mnga/KeHwnr2RgiN\nEtnHDPXZDlJoYeOYt8EOH0edQh0nfwP7ztPFxQXOz8+TZPazszOcnp4mk3aenZ2lzieCbKRNEJvn\nZ2fKZ+KsrULiEkqcbsOLBicPtIupEk4JYj8TGE82jQlIludtG2n/3UL2NcmDDglH6O+YeIS+wwax\n0fYAyCZkE0MWlSP1LIDvAPApAK8DcGd0/M7o78LA0N7l5SV2dnZwcnKCg4MD3Lp1C48++ihOT0/H\n4rc+zOZ77llJeOzkAOkbxof2fJWgv4ntSth2rb9Q4t5gMEjCd9y4zI3tPNnZ2tm59NcpojyLDbEJ\nIF2lakWDi6ru7e2lllGyc5wdHx+PiYad3d86HLZax9pUaD4cy6RwgxeRmHDQtvy5srzpmNedJR55\nve8N4llskD0AsgnZxEMW0ZHaA/AHAH4awKl7bjDaCgVvlp2d4XIt7XYbDx48wKuvvoqXXnopufE5\nMmNHjmyVX6gz5TtVLPX0N47Pu/LeiL+BQyG9rN4+F4xst9vJiBOXi+GolF1puyg39JpQeJvwImHv\nb86BY5ccsjPtM3xBz5sLe7MStd/vJ/dUyEOmY0Fb8hWuWeGFmHcca5hj4ZCskIf9ffy5eC0hO/TX\nl3X+DaPw9gDIJmQTcebtSFUwNJAPA/jI6NgdAI9jOKT7BICX5/yMG4H/xH5/uLgvO1KNRgPHx8fJ\ncil2aZfd3d3gP9/34kO5TP4GCnkedp839hy6+fk6LhjJ0Si7lh+nQOBolshN4W3CzqPGzc5fw+kw\nbHm2z//wj6vVahKuoA14T9Ten36+NRLysid5u/b8IfIIh32dHx325+J12DB71jUVSTBmoPD2AMgm\nZBPZzNOR2gHwAQBfBvBr5vhHAbwDwC+P9h8Zf+t6w44Mb4BOp4OTkxO88sorKJfLyZT1u7u7yWKR\ndp2j0LQGoSFROyLlh1h954nwb59rZT/DG4F9zGtgwjk7Uqenpzg/P082u0ixOlK52RibsF63zf1g\n6MJPJhjK/7DVSZwVfzAYZOYJEjvfmm1UQ553LLSQ5eXGEmm9eHnBsL+Pt9GYw2S/5yZ431OwMfYA\nyCZkE3Hm6Ui9EcCPAfgigM+Njr0XwC8B+H0A78TD0tbC4UekTk5OkokrORLFhEJ7c/mRJE5d4D0D\nPyJlbyQaUNaN5MN4Hh8KDI1IMU8q1JHiHFKTrkOk2Aib8MUOdqZ+LlFBsWCex9HRUWr9R7tI9/7+\nfnK/2Vw+n8NnPVo77Ye///x9nDU6O8nz9ufM8r7t78N9KE8lZOOx68pzbQVmI+wBkE3IJrKZpyP1\nSQCxmRn/0RznXSsGg4eJ2YxP1+v1ZBj37OwsNaJkb3jbifKdrdgWG02y1wMg2PHy+FCgNVKG8Owi\nkZeXl6kRMjE1hbIJ2+D5/A87Txqn/+DGdcHoWR8cHGBvbw+NRiMp22aCKkc9GUrm5j1wIJ1raL11\nLxKTxCJPiMBXJGX9RjaU4r3mrHB9LFexaN72HBTKHgDZhGxiNjSz+QQGg2FiNqvW+v1+aoHJg4OD\nVMeD1Rs2lu47OzbeXi6XxzpKvkfvH/ubzg6j2uP2M5lczvmjmFRuZzG3ie9is/EepL1fy+VyEq6m\n523nxGEird1arVaSOAsgEQng4eipnbfMh7NpN/aagHDJdUwwbOMcsxFCO8sSD76HNmxfGwrR++lH\nfJimqN72tiCbkE3MijpSE7AdKeYV2SHc09PT1EgUE85tVQfwsNceqvzwnR9/g/M6uPfGwJEv+1q/\ncd4ojj7Z6jxOwmmHlMXmEhIM6/nS47Zz4lAsOBLL+585Hwxz2ORZetkXFxfJtBwUDe9YUDCseFjB\noDdvG+JYeHySl+tzQfL8TgAScaOz4a8hFKaJidmka7MUXWSKgGxCNjEP6khNYDB4mAjY6XTQbrdT\nBnN6epoYHme0HQwGSUmrnw4BSMfbeSNaLyQU0rPn8OeK5UFZ74YdKZsTxREpdqRolOt2k4rFE+rQ\n0xGgaPgcECsYPoxhK1cBjFWi2jW2rq6uEmfDLuxK8fCjsPZ+9gm5sRyQLO876/72jbatlKIY8hxW\nxKxY+Elx5/W+84ZcxHzIJuK/i0U2MY46UjmwnkK/308q3R48eIC7d++mblQAqNVqqVi6vxF9AmGo\n40SjsgZg/+b7eW28Ie3Nam9ezlzOWcu5cZqDaZIQRfHwuR92fjLb4McEo16vJxVKlUoltXSR9Ua7\n3W6wwMLfl9bxAJC6Hr9CAO/JPDkgk767P+43e5yfz30sbOG3LI+byMZuHtlE+LhsYnrUkZoShvq4\nHl+1Wk11WPr9PprNZmJw7CwB4+WhHH3i8/Z4aMjTHrPexs7OTtLLp4fD5V86nU4yX5SdyZx/M2Sp\nTtTmMin3g96v7fz7BVfpHDD/j3bQ6XSCjW9WjsZg8HD+NSse9phdFoliEKv4CYlFTCj8a/xm5+ex\nI7p0UvwK9n4RcO9x+9HjWZBNLh7ZRPx3kU1MjzpSM9DtdnF+fp6MNvmbxE5JYHOm/E0Z+pujTFmd\nKMbH+RmEyYtc2sVu7XY7tbaev9k3oXJCxLFerRULG7oIiQarkiga9Lr7/X6SOxhqtH3OBh0KK1gA\nxqqh7ELd1rsHMHMSrScUFo954tbrZk5LSDh8DkjM655GOGSLy0U28RDZxHyoIzUDnA4h1Imy3gIr\nPXjz2zCeNWLvHYVuOOsJ2NAe4c3N0lqumffgwQM8ePAgmd7Altr6XCqeR2wesdwP63kzREHBsB64\n974pGtz7jr9PevVVT9bB8N63X6ib96kvD/cOhv++IWg79nHWZj/brmVpq628aPg2YdI1xa5TLBfZ\nBJLzySbmQx2pGeDIDzs9vBlsD503zmAwQL1eT4yCCYRZw7A2js7XAOnQoL2Bu91usswLO098zI3r\n5vE9qszbfHiv+KUtKBg+D8Q32jYvww7l04Hodrtjjatt5G0nna+xImHFyn6ubdT9+WxjPK1g+Od4\nTaH38Pw2/8N73j50MakyyqMR4NUjm4j/Jnwsm5gedaSmhDcTDabf7yfeCMNqdpLLTqeDVquV8mYA\njIXVaDSs8GBuE6clsF7L7u5uEqLj3neiGM7j4sOaaHN7iOV/2EVWrXDY8AEbbTvCaTv+zInwI6m+\nIfdhklqtlprAsNlspsIjvP+zBGhS2MJ61jHsVCE+XGGFwoZgspJoKRb+emJhkdD1eeEoopCsO7KJ\nOLKJ+VFHagbs0C1vmsvLS5yfn+PBgwepuZmurq6wv7+fzDnC4Vc7p1O/3086WrVaDTs7O6nKuk6n\nkzK4er2eep6faztT/GxuvE5Nb7Ad2MYqlEgb8rptnob1tAeDYSIsG1A7pQfx4Wg7hw7XIqNYtFqt\n5D7mWpX8fNuIWw8+j2frQ90xAfENuH2d9bht5asXCzpBFJjQCIAPv+cRDtnm8pBNyCaWhTpSM2BL\nW3d2dnB1dYXz8/PEe+FM4byxLi4ucHBwkJrs0naEBoMBWq1WYlClUgknJye4d+8e7t+/j/Pz82Se\nkv39ffT7fZyenib5T+xE2c4UR7ps58luYrMJed5eMOwW8765Z04Ht0kFEXt7e8noKnNMOO+OHaH1\npeNkkaGL0G8Twnvg3vv24Qs/G7X93b3Hnef6ZJfLRTaR/duEkE3kY56O1NMAPgTgMQADAL8J4NcB\nvA/ATwJ4ZfS69wL4kzk+Z+2gIZFut5v5Oj8dwWAwSHWk+v1+smp4p9NBqVTCvXv3cO/ePdy9ezcJ\nz9klXmwn6sGDBzg9PU1tCuHdCGthE1YwYsJhPXLv8fLx9fX1mOfOxyFv0TaSzPvwS2nQA7dzrTFv\nkOez4uDDGVkhDP8bhLC5KfaYFSg/x0+oxNzmN84awtgSp0Y2AdnEptvEPB2pLoCfAfB5AHsAPgPg\nYxgay6+Otq2EE2CenJxgMBjg8vIymcCz2WxiMBgkYb2LiwsMBgOcnJwkQ72lUimZefz09DQJ07Xb\nbZycnKDRaIxNb8BQYq/Xu+mvv82shU2EQhjW8w552L6R86Lik3NDibo2jy+07hiFwxZfWI/fCta8\nHnZWY+xHDCYJhi8rB5B8b3su5pqEBMN/rhetDUY2IZvYeJuYpyP1rdEGAGcAvgLgqdHfs82ytSH0\nej10Oh0A6TmnOGwLIDUUOhgMkuFcTpdgR7A4ASjfX61WU1MZ2JJT5mCJG+HGbcJ7wKFcEF95FPJo\nY8LBPQWCz1er1VQenw1F7+/vp/I/arVaIl62rJvC4RvX0P0cy/2w4QT/vtB5Y8JB8QjNz2N/HwoH\ni074G4VCF37Ewn63DbZZ2YRsYuNtYlE5Us8C+A4AzwN4I4B3AfhxAJ8G8LMA7i/ocwoBR6TYAfKV\nIQDGhkF9ea3v9XujD03CFpqnQ9wYz2LFNuHzD7JCGMB4I+q9y1AjyHOy8WTjX61W0Ww2E5Hg+mMM\nWVsnoFqtpiYYDIUVJolFKJRh38/jMVuY1vv2IQsrGDa0EwtheKHI+o4bzLOQTcgmNtAmFtGR2gPw\nPwD8NIYex28A+A+j534BwH8C8M4FfE5h4M13dXV105ciboaV24RvOH0jH2rEfMNpp8cI5YDwXIQT\nFzLnY39/H4eHhzg6OkoSaLmoq62E2t3djTb0/m8vDtbT9uTxwkMiaQXD/xa+Osr+tn50w4YwYtdX\nRG97QcgmZBPB69sEm5i3I1UB8AcAfgfAR0bHXjbPvx/AH835GUIUiRu1idjwOUu37bGQB0rR8OtD\n2lmYa7VaIgYUhoODAxweHib5HzaJliXftoENXUPII/WNfkg4JjXAk4Qjq5zcC4QNWVhv2//eec69\nRcgmZBMbbRPzdKR2AHwAwJcB/Jo5/gSAl0aP3w7gS3N8hhBF4kZswoYvQrAB42PuY42bb2TtBIKc\nosOGKXzux/7+/thyGjbnY9Lnh4TDfpeQh22fz/qN7Gf7EEao4ojvteEb7vl40qhGKHSxCeKRE9mE\nbGLjbWKejtQbAfwYgC8C+Nzo2L8D8M8BvAHDqoyvAfipeS5QiAJx4zYREg4/ZO8brtBQPc9FASmX\ny6jX69jb28PBwQH29/dTFUjM+6Cg2OIKFljYz+b0IaHPDw31e687JB558KJpBcPOt+Z/A4qG9bxt\n2ML/7pvqec+AbEI2kXzXTbWJeTpSnwRQChz/X3OcU4gic2M2YRut2LA6HwPjsy7bzTbQpVJ67pv9\n/X0cHR0lYQuGLmwpd6vVSuV/VCqVVM5FHsGIfUfrcc/aAIe+sxdV+5kxwbCVXqFzZwn1FiGbkE1s\nvE1oZnMhNgzfcGU9zwbMJtFWKpUk/FCv19FqtXB0dITj42McHR0lokEPnGELlnPXarWxuXCyNn8t\nvlGdRSyyXpfVeIe8bZsPYn9Pe+2x75UlzmJ1yCZkE8tEHSkhNpCQYPghfG4sAec8ZhQKbvS4WX10\neHg4Vs5ty7hrtVrq87zn7eegySMceb4vCYU87PcOvc+KhRcOmwfi8z6yhDAkKkUWi6Ijm5BNLAt1\npITYMGwjSeHwDbJ9TM+bEwiy4ogbwxV2s6LSarXGFnu1QmGTV+02zRD/tGGLWbzvLOGwuR/+PJOE\nI+aBi9Uhm5BNLBN1pITYAKy3yb/Z0MXEwr6vXC6P5XwcHx8noYtQKbddK8zPsdPtdlONpk1e9dVA\n83jeWa+1XnjM6+brJomFnTfI/pZWHGLz7GySYBQJ2cQ4sonloI6UEBtEqHG0jSAFwm71ej01+zLD\nFRQOioV9jV2l3s6B0+v1sLOzg263G12bK0swVg1FIFZpBCAlCpOWy8ib+yJWh2xiOmQT06OOlBAb\nQszTtN4jwxXM26DH7cu3KRrM/2Ap9/7+PprN5tjszj4kkWd1+KxwwqSGdZENrxcKioe9vtgoQmyb\nNnlYLAfZxGzIJqZDHSkhCo4PYdjjZGdnJ8nV4CzMdiJBG6ZgzgcFg6XcnBOn0WiMJY369R6tYPR6\nvWAj6q/R4pNiQ99pkcS877yC4b9fzBvfBO+7CMgm5kc2kR91pITYIGyDxMd20WyWcdvkWS8Sdi4c\n7m3+R71ex9XVFbrdbrIxUdYucBprVLO80JD4Tfqu8zbCXiwmCUdezzurCqvowlEkZBPTI5uYDnWk\nhNggGLKwq9rbZSk4E7P3tG0OCHM+6HE3Go1kdXofouj1eknuh80BiYUugPyNfEgApyHr80KVRj5k\nkVckfMjGf/9Q+GbW7ySmRzYx/n7ZxGJRR0qIguOTQ3d3d1Nz2HChVFYThUq4be4HJxPkxskEASRe\ntvW8fRItG82sfAh/7VnhCt/I5mlsp22QQ4KRRzSsQISEw/8GmxLKWHdkE+PIJpaHOlJCbAA2n4E5\nH41GA41GI+VJ29yPkGgcHR2llrOoVCqJ181Gj552TDB8/kcej3OSeEwjFLN4+dMk0foRhtD3zwrh\niNUgm5BNrAp1pITYEKxoMOeDVUX0uPf398fEgnvOj9NsNscSTa1A2H2opLvX6y3E0ww1/rOEQEK/\nk31dLIThhSMkFjEh8ZsffdgE8SgCsonx98Z+J/s62cR0zNORqgP4KwA1AFUA/xPAewHcAvB7AL4N\nwAsAfhTA/bmuUohisBKbYHk197u7uyiXy0kFEoWCmw1b+BCGXam+2WyiVqthd3d3rCG1uR+h/A8/\nL04oiXRS0uwiGtLYOWxjHdti4Quf+2I3m2CcJ5SzqO9ZEFamEbKJ6c8hm1gc83SkOgC+H0B7dJ5P\nAngTgLcB+BiAXwHwbgDvGW1CbDpLtwmbOEux4ESA3FuxiImG3VqtVpL3YVdytw1oLP+Dj7PKmfNU\nHU0KX2Tli+Q9b5ZQ+Abee9xeIK6ursYEI5RYvCnJtDOyEo2QTYRfn+e8sonFMG9orz3aVwGUAdzD\n0EjePDr+QQAfhzpSYntYuk1wNXpuTJi1ibNeNLy3bb3zer2eiBBFY5Ln6Z+zDfC0oYtZBcG+dtJ7\nskIVk5JoQx6332IjEaFRiC1jJRohmxh/rWxidczbkSoB+CyAvwfgNwD8DYDXAbgzev7O6G8htoWl\n2wQbeHrcNu+DibPW6/aJtHwd31OpVFING73GUNiCj20+BEXDbnnnvskSjEV53llhi5iIxEQzJhhW\nTO1vM+01byAr0QjZhGziJpm3I9UH8AYAhwD+FMNhXMtgtAmxLSzMJrhel83/KJfLaDQaqNfrSQWS\n97Z9uMJ62nYmZpZw2+Us2OCFwhZ+mH5Wbzv5IaYUg7yhjryhi1C4xn53KwyXl5fJNkkwrNctFqsR\nsol8r5dNrJZFVe09APDHAL4LQw/jcQDfAvAEgJcX9BlCFImZbYIiQaGwibMMW3A5C64J5jfrbftV\n6f0cOKFEUi8aviInq3Q5y/MOvT7rWEwIJr0ur1iEQhYUiU6nM7Z54ZiU/yES5tII2YRsYp2ZpyN1\nG0APw2qLBoC3Avh5AB8F8A4Avzzaf2TOaxSiKMxtE7bE2i5hwYkEbQm3nQPHC4Zd2oJJs9woQsDD\nyQR9WMJ73pNKl+nBZy2umsfbnsYDn+R9TwpZ+GRaCkCWaFhP/OrqKjOcIxajEbIJ2cS6M09H6gkM\nEwVLo+3DAP4CwOcA/D6Ad+JhaasQ28DCbIKryDPvw4YtQhVIocVVKRzVajUpA9/d3U017Kwusg1f\nSDR8IwvEG/jYRIIkb/gi5HnHnptWOGIeOL3vPJ43RcOeY9J32jIWqhGyCdnEupJ/NcTFsrm/qCgq\nN2ULZMDcDFvGXa1WUxVIXFjVz3+TVc7NyiN69LE8CL9Zz9uHAJKLjoQXYs9lvX7sB5lCGEJ7nywb\nyvGwYtBut3F+fp5s7XYbFxcXydbpdMZKvv1nbBiyCdmEbCJN0CY0s7kQawIbd5Zwc1kL5n4wfOFn\nYfbVSFyN3nra/X5/LIE2Voljh+ZD+Q1ZoQpg9nDFvF429yHPm9/bVhrZUMXFxQXa7XZq84JxeXm5\n0MRiMRnZhGyiCKgjJcSaUKlUUCqVUourMv8jtC4Yl6/wMzYz76NSqaRCCrbx9Im0eWYftvj8jzze\n9TRCk/X6aQUjVL7d7XYT0fBiQcFot9tjYQx7nm0UjFUjm5h8zB6XTdwM6kgJsSYwX8MmwTYajaBg\nMN/j+Ph4bPkLW9FE0bANnE8GnTRpHpBuwOf1vieFMmKvzwqL+OesYFih9HPfWM/bhi64t4JxdXU1\nds6s7yHmRzaR/XrZxHqgjpQQa4INXdTrddTr9aREO7ZWGJez4LpgjUZjbHFVn/vhvW4vIrHE2UkN\n/DRiESN2vpiHHXqOf/vKIx++sN42c0BCoQs7P07oc8XykE3IJoqAOlJCrAmsJOLszKxIYhjDViVx\nEkHmflQqlaR8G3jYgMYEw2+hxNCYlz3Jm55WbGLn8Y+z3mMFg8eur69TDb71sCkSZ2dnqURaeuMU\nDM4X5IV0WwVj1cgmZBNFQB0pIdaEarWKSqWSy/u2osHcD4qGb9ist+1Fwuc1+MZwGuHI623nFZHQ\nd4l54aGwC0u36W3b6iMrFtbztlVLdk6c0PcTy0c2EX+tbGJ9UEdKiDUhJBo2H8R63/TIm81mkkfC\ncm6fs+DDFMz38MmzsUYxSzj8+6YRj9jzWQLhX591DRQNhiysYHiv+/z8PCUW9Lzt7yTRWD2yifTf\nson1RB0pIdYElnhTNOh5+woligXXF+NEhaH5cELl3F4oppnrJctLnlYsQq+Z5NXHBMM37v1+P5U4\nawXj9PQUZ2dnYxVJnKWZeSOhBGOxWmQTsokioI6UEGsC1w1jLggrkrxQ1Go1VKvVZHFVAGMedygH\nJMvLzhtG4ONQ6CD2+jyfE/qMSddiv2uo2sp62qHNVyDZRVYlFOuBbEI2UQTUkRJiTeAaYrVaLZUD\nQq+b3rjN//Bz4gAYm1wwa/6bvI24/4ys184bxsjzWhui4cbwA/ch0bDH/PIWNol2kviJ1SCbmIxs\n4uZRR0qINcF736xKCnnfLAsvlUpjibFZghHzmj0hb9v/7c+T16vPKyKTQibe8768vEw86ouLi6DH\nbRNpOSszl/2wIR7lf6wHson087KJ9aQ0x3vrAD4F4PMAvgzgF0fH3wfgGxguTPk5AD84x2cIUSTm\nsglb4u1Xs6fnzVXrKRgk5I36ZS0mNYSTGvg8780bipjmGuxzVjD8ZIIUjbOzM5ycnIxtzAOheDAP\nhB64XwIk7zWLTGQTsomNZ54RqQ6A7wfQHp3nkwDeBGAA4FdHmxDbxFw2cfv2bdTrdRwfHycLrVIw\n6vV6MqeOrUTygpBVtg3km4E5lHfhH0/jvWcdiz0fugYfnrGLrV5dXY2VcPvQhV1kNZRgnPd7iKmQ\nTZjz5DkWe142sb7MG9prj/ZVAGUA90Z/3/Sq4ULcFDPbxCOPPJISDZZ0sxKJOSD0uu2EeCHh8EwS\njBB5vOlQA591nryf44XKe9zM57Bz4nihsHub+2G97JjQSjAWhmxCNrHRzBPa4/s/D+AOgL8E8Dej\n4+8C8AUAHwBwNOdnCFEkZraJ27dv49atWynRoPfNqiQbvqD37ScUDDWATMDNS6zxnOR1TzpX6LlJ\ngsF9vz++Ur1dE4yCcXp6moQtbOiCszRTNGITL0osFo5sIuNcoedkE8ViUSNHhwD+FMB7MIyDvzI6\n/gsAngDwTvd6/VfEurHoUdSpbeKtb30ryuUyqtUqvvM7vxPf+73fi1arlax6zzl1Qh5jKLyQ9bf1\naCe9zh7LOi8fp77UnF439/1+P1VRdHl5ObYqvRWJ09PTsckFszxuCUcQ2YRsQjaRJmgTi6raewDg\njwF8N4CPm+PvB/BHC/oMIYrE1DbxIz/yI6hUKklFUigHBMjXoIUa71gDGXtd6FxZz026hjx4QePG\nCiQbtrDrhPnHTJiN5X7k/T3EQpFNyCY2knlCe7fxcDi2AeCtGFZfPG5e83YAX5rjM4QoEnPZRFYy\nLefHWVTDlqfhzCsWIY912usMjQr4vA+WcPvV6b23HVtgNTbiMI0QiqmRTQSen+V6ZBPryzwjUk8A\n+CCGnbESgA8D+AsAHwLwBgzDd18D8FNzXqMQRWEumzg4OMDu7m6yHAZzQOh1z5LTkUcYYp566Pk8\nQ/3zNLps1Jmv0e12k/wPzrh8cXGRygOhcPjlLTihoF1gNUswJBZLQTaRcTzvNcsm1pubqq7Tf0es\nGzddaTr467/+a5RKpST3g0teAOPVOrNueYfyQ49jzyVfYIbG177Hhy1sGTeTaK1ghJa34HMXFxfJ\nhIKsavIe+KzXvEXIJmQTIs1Sc6SEEHNSq9VQKpWCK9cD4YYtb2OX5WWHPOzY+RfVuHoBsjMy9/v9\nVBVSyPO2oQq+hp46hSJrFutFfhexPGQTsokioI6UEGtCrVbDzs4OSqVSas0wS5an7Bu2h30fAAAG\nUUlEQVT7Scdj5+Zje9y/Lgt/3bHX29EAP/u097wpGiHhsOuC5RGMLJEU64VsQjZRBNSREmJNqNVq\nAIaN7rS5HySPIPhjsUZ02oY1VkEVOx7yvBl6sN43vWwrFqFV6q1oWMHwS4HI+y4OsgnZRBFQR0qI\nNaFWq0U9a0+swY+9LvS+0Gv941m88CzxyApf2MVSY963zfmYJoyh8EUxkU3IJoqAOlJCrAne444t\na5FHRCaFOWLHp2lQJ5Weh3JZrFj4hWQpGvS8KRjWA7ciYcMXXiwkGJuBbEI2UQTmXSJGCLEg8nrc\nec8VE46YgISuwz/nmSbc4r1tKxhs+K1o+DwQ723bHBBbjSTB2BxkE7KJIqARKSHWiFjIYRqPO8vr\nzhvGyMJ73bEEYPtau4XyPyZ53iHB8J63F45Jv58oBrIJ2cS6o46UEGvCJO879Fp/bJLXHXp97Bpi\nnwNMDmGEsEmuPnwREg0rHH4LCYYPYUgoio9sQjZRBBTaE2KNiDV0szT+eUMh03jd/u9JYYyQ550l\nGN7j9pv3vEPhi5BoiuIim5BNrDvqSAmxpkwagp8mRMHnpyUmFPZ4TDxioYtQMm0obGHLuWO5IKGK\npEkjB6K4yCZkE+uIOlJCrAmDwQDPP/988jj2mphYhPjMZz6TeT57DkuWKHzhC18IHg9NOmgFw+eB\ncP+Vr3xlLJk2JhixEEZoNXtRfGQTsokioI6UEGvE888/P1X4IeZ9c/vsZz+b+3yToEhQNOzx0Pnt\n51jP2yfVfvWrX00twuoFwwqHXSIjNOGgBGPzkE3IJtYddaSEWCNiDXyeY4v6vDzE8kDs8dhIARt3\n6y375TBCFUdedHwVkpJpNxPZhGxi3VFHSogNoAiNZRGuUWwORbjfinCNYjKzLV40Px8H8OYb+mwh\nPH8F4C03fA0fh2xCrA+yCSHSrINNCCGEEEIIIYQQQgghhBBCCCGEEEIIIcTW8IMA/hbA/wPw7gWd\n8wUAXwTwOQD/e4b3/zaAOwC+ZI7dAvAxAF8F8GcAjhZwzvcB+MboOj+H4W+Rl6cB/CWAvwHwfwD8\nqwVcZ+ycs15nHcCnAHwewJcB/OICrjF2zlmvcR2RTcgmZBNpZBOyCdlEhDKAvwPwLIAKhl/6Hy7g\nvF/D8J8wK98H4DuQvpl/BcC/HT1+N4BfWsA5fw7Av57xGh8H8IbR4z0A/xfD326e64ydc57rbI72\nuwCeB/CmOa8xds55rnGdkE3IJmQTaWQTsonC2MRNzCP1PRgayAsAugD+O4B/vKBzzzOdwycA3HPH\n3gbgg6PHHwTwTxZwTmD26/wWhg0KAJwB+AqApzDfdcbOOc91tkf7KoYN4r05rzF2znmucZ2QTcgm\nZBNpZBOyicLYxE10pJ4C8HXz9zfw8B8yDwMAfw7g0wD+5QLOBwCvw3DIFaP96xZ03ncB+AKAD2D6\nYWDyLIZezKewuOvkOZ+f8zpLGBrdHTwcDp73GkPnnOca1wnZhGxCNpFGNiGbkE1k8E8B/Jb5+8cA\n/OcFnPeJ0f5RDH/I75vhHM8iPbzqvYS7CzjnYxj2jncA/EcM/7HTsgfgM3jYW1/Ede5h2LjwnIu4\nzkMMje37F3SN9pxvWdA1rgOyCdnErNdoz/mWBV3jOiCbkE3Meo32nG9Z0DVmchMjUt/EMHGNPI2h\ntzEvL432rwD4QwyHhuflDoaxYWBogC8v4JwvY+gVDQC8H9NfZwXAHwD4MICPjI7Ne5085++Yc857\nnQDwAMAfA/iuBVyjP+d3L+ga1wHZhGxCNpFGNiGbKIxN3ERH6tMA/j6GPfAqgH8G4KNznrMJYH/0\nuAXgB5Du3c/KRwG8Y/T4HXh488zDE+bx2zHdde5g2Jv+MoBfM8fnuc7YOWe9ztt4OHTaAPBWDCsl\n5rnG2DkfN6+Z9rdcJ2QTD5FNzHdO2UQc2YRsosg2McYPYZj1/3cA3ruA8z2H4TDt5zEszZzlnL8L\n4EUAVxjG5n8Cw+qOP8fsZa3+nP8CwIcwLL/9AoY3yTQx4DcB6GP4PW0p5zzXGTrnD81xnd8O4LOj\n830RwL8ZHZ/nGmPnnOe3XDdkE7IJ2UQa2YRsQjYhhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQ\nQgghhBBCCCGEEEIIIYQQQgghlsb/B7d5qVPk0MlDAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f521fba7390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=[10,10])\n",
    "y = fig.add_subplot(2,3,1)\n",
    "y.add_patch(plt.Rectangle((start_loc[2]-1,start_loc[1]-1),\n",
    "                          patch[1],\n",
    "                          patch[1], fill=False,\n",
    "                          edgecolor='red', linewidth=1.5)\n",
    "            )\n",
    "y.text(start_loc[2]-45, start_loc[1]-15,\n",
    "       'Cropped Region',\n",
    "       bbox=dict(facecolor='green', alpha=0.5),\n",
    "       color='white')\n",
    "y.imshow(sample[15,:,:,0],cmap='gray')\n",
    "y.set_title('Original Image')\n",
    "\n",
    "y = fig.add_subplot(2,3,2)\n",
    "y.imshow(crop_data[2,:,:,0],cmap='gray')\n",
    "y.set_title('Cropped Image')\n",
    "\n",
    "y = fig.add_subplot(2,3,3)\n",
    "y.imshow(rotate_30_data[2,:,:,0],cmap='gray')\n",
    "y.set_title('Rotate 30 Deg')\n",
    "\n",
    "y = fig.add_subplot(2,3,4)\n",
    "y.imshow(rotate_90_data[2,:,:,0],cmap='gray')\n",
    "y.set_title('Rotate 90 Deg')\n",
    "\n",
    "y = fig.add_subplot(2,3,5)\n",
    "y.imshow(affine_data[2,:,:,0],cmap='gray')\n",
    "y.set_title('Random Affine Transformation')\n",
    "\n",
    "y = fig.add_subplot(2,3,6)\n",
    "y.imshow(pipeline_data[2,:,:,0],cmap='gray')\n",
    "y.set_title('Pipeline Transformation')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
